---@coding utf8

---@breif 获取list当前大小
---@param tab any[]
---@return integer
local function list_size(tab)
    return #tab
end

---@breif list尾部插入
---@param tab any[]
---@param value any
local function list_append(tab, value)
    table.insert(tab, value)
end

---@breif list头部插入
local function list_append_head(tab, value)
    local size = list_size(tab)
    -- size到1循环处理
    for idx = size, 1, -1 do
        tab[idx + 1] = tab[idx]
    end
    tab[1] = value
end

---@breif list指定位置插入
---@param tab any[]
---@param pos integer
---@param value any
local function list_insert(tab, pos, value)
    local cur_size = list_size(tab)
    -- 末尾插入
    if pos > cur_size then
        list_append(tab, value)
        return
    end
    -- 头部插入
    if pos < 1 then
        list_append_head(tab, value)
        return
    end
    -- [pos,size]之间的数据后移一位
    for idx = cur_size, pos, -1 do
        tab[idx + 1] = tab[idx]
    end
    tab[pos] = value
end